package org.fatewa.engine.design.advice;

import java.util.HashSet;
import java.util.Set;

/**
 * 作用相当于 {@link org.fatewa.engine.advice.annotations.OriginalResponse}
 * 可函数式配置
 *
 * @author fatewa
 */
public abstract class AbstractOriginalProvider {
    /**
     * 白名单容器
     */
    private final Set<String> WHITE_LIST = new HashSet<>();


    /**
     * 放行路径
     *
     * @param uri 路径
     * @return self
     */
    public AbstractOriginalProvider add(String uri) {
        WHITE_LIST.add(uri);
        return this;
    }

    /**
     * 判断是否存在
     *
     * @param uri 路径
     * @return 路径是否存在
     */
    public Boolean match(String uri) {
        return WHITE_LIST.contains(uri);
    }


    /**
     * 配置入口
     *
     */
    public abstract void configure();
}
